# [TCP] 3 way handshake & 4 way handshake
์ฐ๊ฒฐ์ ์ฑ๋ฆฝํ๊ณ ํด์ ํ๋ ๊ณผ์ ์ ๋งํ๋ค
# 3 way handshake - ์ฐ๊ฒฐ ์ฑ๋ฆฝ
TCP๋ ์ ํํ ์ ์ก์ ๋ณด์ฅํด์ผ ํ๋ค. ๋ฐ๋ผ์ ํต์ ํ๊ธฐ์ ์์, ๋ ผ๋ฆฌ์ ์ธ ์ ์์ ์ฑ๋ฆฝํ๊ธฐ ์ํด 3 way handshake ๊ณผ์ ์ ์งํํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ SYN ํจํท์ ๋ณด๋ (sequence : x)
์๋ฒ๊ฐ SYN(x)์ ๋ฐ๊ณ , ํด๋ผ์ด์ธํธ๋ก ๋ฐ์๋ค๋ ์ ํธ์ธ ACK์ SYN ํจํท์ ๋ณด๋ (sequence : y, ACK : x + 1)
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์๋ต์ ACK(x+1)์ SYN(y) ํจํท์ ๋ฐ๊ณ , ACK(y+1)๋ฅผ ์๋ฒ๋ก ๋ณด๋
์ด๋ ๊ฒ 3๋ฒ์ ํต์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ์ฑ๋ฆฝ๋๋ค. (3๋ฒ์ด๋ผ 3 way handshake์ธ ๊ฒ)
# 4 way handshake - ์ฐ๊ฒฐ ํด์
์ฐ๊ฒฐ ์ฑ๋ฆฝ ํ, ๋ชจ๋ ํต์ ์ด ๋๋ฌ๋ค๋ฉด ํด์ ํด์ผ ํ๋ค.
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ค๋ FIN ํ๋๊ทธ๋ฅผ ๋ณด๋ธ๋ค.
์๋ฒ๋ FIN์ ๋ฐ๊ณ , ํ์ธํ๋ค๋ ACK๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค. (์ด๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ํด CLOSE_WAIT ์ํ๊ฐ ๋๋ค)
๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋๋ค๋ฉด, ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋์๋ค๋ FIN ํ๋๊ทธ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค.
ํด๋ผ์ด์ธํธ๋ FIN์ ๋ฐ๊ณ , ํ์ธํ๋ค๋ ACK๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค. (์์ง ์๋ฒ๋ก๋ถํฐ ๋ฐ์ง ๋ชปํ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก TIME_WAIT์ ํตํด ๊ธฐ๋ค๋ฆฐ๋ค.)
์๋ฒ๋ ACK๋ฅผ ๋ฐ์ ์ดํ ์์ผ์ ๋ซ๋๋ค (Closed)
TIME_WAIT ์๊ฐ์ด ๋๋๋ฉด ํด๋ผ์ด์ธํธ๋ ๋ซ๋๋ค (Closed)
์ด๋ ๊ฒ 4๋ฒ์ ํต์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ํด์ ๋๋ค.